import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class StandardExamInTime extends JFrame implements ActionListener,ItemListener{
	    File testFile;
	        int MAX = 8;
		    int maxTime = MAX,score=0;
		        javax.swing.Timer time;  //计时器
			    JTextArea  showQuesion; //显示试题
			        JCheckBox choiceA,choiceB,choiceC,choiceD;
				    JLabel showScore,showTime;
				        String correctAnswer;   //正确答案
					    JButton reStart;
					        FileReader inOne;
						    BufferedReader inTwo;
						        StandardExamInTime(){
								        time = new javax.swing.Timer(1000,this);
									        showQuesion = new JTextArea(2,16);
										        setLayout(new FlowLayout());
											        showScore=new JLabel("分数"+score);
												        showTime=new JLabel(" ");
													        add(showTime);
														        add(new JLabel("问题:")) ;
															        add(showQuesion);
																        choiceA =new JCheckBox("A");
																	        choiceB =new JCheckBox("B");
																		        choiceC =new JCheckBox("C");
																			        choiceD =new JCheckBox("D");
																				        choiceA.addItemListener(this);
																					        choiceB.addItemListener(this);
																						        choiceC.addItemListener(this);
																							        choiceD.addItemListener(this);
																								        add(choiceA);
																									        add(choiceB);
																										        add(choiceC);
																											        add(choiceD);
																												        add(showScore);
																													        reStart=new JButton("再做一遍");
																														        reStart.setEnabled(false);
																															        add(reStart);
																																        reStart.addActionListener(this);
																																	        setBounds(100,100,200,200);
																																		        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
																																			        setVisible(true);
																																				    }
							    public void setMAX(int n){
								            MAX = n;
									        }
							        public void setTestFile(File f) {
									        testFile = f;
										        score=0;
											        try{
													            inOne = new FileReader(testFile);
														                inTwo = new BufferedReader(inOne);
																            readOneQuesion();
																	                reStart.setEnabled(false);
																			        }
												        catch(IOException exp){
														            showQuesion.setText("没有选题");
															            }
													    }
								    public void readOneQuesion() {
									            showQuesion.setText(null);
										            try {
												                String s = null;
														            while((s = inTwo.readLine())!=null) {
																                    if(!s.startsWith("-"))
																			                        showQuesion.append("\n"+s);
																		                    else {
																					                        s = s.replaceAll("-","");
																								                    correctAnswer = s;
																										                        break;
																													                }
																				                }
															                time.start();   //启动计时
																	            if(s==null) {
																			                    inTwo.close();
																					                    reStart.setEnabled(true);
																							                    showQuesion.setText("题目完毕");
																									                    time.stop();
																											                }
																		            }
											            catch(IOException exp){}
												        }
								        public void itemStateChanged(ItemEvent e) {
										        JCheckBox box=(JCheckBox)e.getSource();
											        String str=box.getText();
												        boolean booOne=box.isSelected();
													        boolean booTwo=str.compareToIgnoreCase(correctAnswer)==0;
														        if(booOne&&booTwo){
																            score++;
																	                showScore.setText("分数:"+score);
																			            time.stop();       //停止计时
																				                maxTime = MAX;
																						            readOneQuesion(); //读入下一道题目
																							            }
															        box.setSelected(false);
																    }
									    public void actionPerformed(ActionEvent e) {
										            if(e.getSource()==time){
												                showTime.setText("剩:"+maxTime+"秒ln");
														            maxTime--;
															                if(maxTime <= 0){
																		                maxTime = MAX;
																				                readOneQuesion(); //读入下一道题目
																						            }
																	        }
											            else if(e.getSource()==reStart) {
													                setTestFile(testFile);
															        }
												        }
}
